lugfandomcom_th-20200214-history
Tor via SMTP
พอดี บริษัท ที่ ผม ทำงาน อยู่, เขา ไม่ อนุญาต ให้ ใช้ internet (http). มี ช่องทาง เดียว ที่ จะ ติดต่อ กับ โลก internet ภายนอก ได้ คือ ทาง email. ผม เลย เกิด ความ คิด ว่า มัน จะ มี ทาง ออก http โดย ใช้ ช่องทาง email ที่ มี อยู่ ได้ มั้ย. วิธี การ ที่ คิด มา ได้ เป็น ดังนี้, # send email having the content like 'From: my_email@xxx.co.th, request http://....' to volunteer@volunteer.ip # procmail script at volunteer@volunteer.ip get the email ## procmail script: invoke 'wget http://....' ## procmail script: send email having the content of http://...., back to my_email@xxx.co.th # my_email@xxx.co.th side is running a fetchmail to periodically poll for the incoming email (from pop3 or imap server at @xxx.co.th) ## the incoming email will then be passed through the local procmail script ## procmail script: check the email content if it is not from volunteer@volunteer.ip (or something like, that depend on the design of the underlying protocol), then pass the email to the normal inbox ## procmail script: if it is from volunteer@volunteer.ip (or something like), then extract the content of http://...., and save the content in /tmp or some specific place. พอ ดี ว่า ผม มี account บน เครื่อง ใน มหาวิทยาลัย (ที่ อยู่ ใน internet) ที่ สามารถ รับ-ส่ง email และ มี shell ให้ เข้า ไป config procmail อะไร ได้, ผม ก็ เลย เขียน script พวก นี้ ไป วาง ไว้ ใน account บน internet นั้น ซะ เลย. ก็ สามารถ ใช้ งาน ได้, ก็ โอเค อะ, load เวป หรือ download file อะไร ก็ได้, เพียง แต่ ช้า ไป หน่อย, เพราะ email มัน มี delay บ้าง เป็น บาง ครั้ง. แต่ ผม ก็ ส่ง request ไป ที ละ หลาย ๆ url เลย, แล้ว รอ ให้ มัน ตอบ กลับ มา ที เดียว. (หยั่งงี้ จะ มอง ว่า เป็น pipeline request ก็ ได้) วิธี นี้ อาจ เอา ไป ปรับ ใช้ กับ tor เพื่อ ส่ง tcp/udp port ใด ๆ ก็ ได้. อาจ จะ มอง ว่า ทำ เป็น plugin ให้ tor support การ รับส่ง ผ่าน email. แต่ วิธี นี้ ก็ มี ประเด็น เพิ่ม มา คือ, # ถ้า packet ถูก แบ่ง ส่ง เป็น email หลาย ๆ ฉบับ แล้ว, email มัน อาจ เข้า มา ไม่ เรียง ตาม packet ก่อน หลัง. อันนี้ ก็ ต้อง design protocol ที่ จะ จับ มัน กลับ มา เรียง ให้ ได้ ถูก ต้อง. # email หาย ก็ มี. จาก ประสบการณ์ ผม, email ของ packet บาง ท่อน อาจ หาย ไป ระหว่าง ทาง. อันนี้ ก็ ต้อง design retransmit protocol ให้ ดี ๆ เช่น กัน. วิธี นี้ จะ ถูก block ได้ มั้ย? # block @volunter.ip ? ## block volunteer.ip port 25 (smtp) ## ควบคุม smtp server ของ isp ทุกตัว ไม่ให้ ส่ง email ไป ยัง @volunteer.ip ## block smtp server ทุกตัว ที่ ไม่ สามารถ ควบคุม ได้ (เทียบเคียง กับ การ block anonymous proxy). ## ให้ isp ทำ transparent smtp ที่ redirect port 25 ไป ยัง smtp ของ isp # ใน กรณี ที่ @xxx.co.th เป็น ของ องค์กร ที่ สามารถ สั่ง หรือ ควบคุม ได้ ## สั่ง ให้ @xxx.co.th ใส่ script เพื่อ scan และ drop email ที่ มา จาก @volunteer.ip, หรือ drop email content ที่ มี protocol หรือ header ที่ บ่งบอก ว่า เป็น tor. (เหอะ ๆ ๆ, นี่ เรา ชี้โพรงให้กระรอก อยู่ นะ เนี่ย) ถ้า มัน block ได้, ก็ ใช้ @gmail.com เลย ดิ. my_email@gmail.com <=> volunteer@gmail.com gmail support pop3 ด้วย นิ, ยิ่ง ง่าย เลย. (สำหรับ yahoo mail, ต้อง จ่าย ตังค์ เพื่อ ใช้ pop3) ทีนี้ ทาง ฝั่ง volunteer@gmail.com ก็ ต้อง มี เครื่อง client ที่ run fetchmail เพื่อ poll incoming email ตลอด เวลา เหมือน กัน. ใช้ @gmail.com แล้ว ยัง block ได้มั้ย? # block volunteer@gmail.com ? ## ควบคุม smtp server ของ isp ทุกตัว ไม่ให้ ส่ง email ไป ยัง volunteer@gmail.com ## block gmail.com port 25, แล้ว บังคับ ให้ ส่ง email ผ่าน smtp ที่ เขา ควบคุม ได้ เท่านั้น, หรือ อาจ ทำ transparent smtp ที่ redirect port 25 ไป ยัง smtp ของ isp # block my_email@gmail.com ? ## block pop3 service ของ gmail.com, เพื่อ ไม่ให้ fetchmail สามารถ fetch email เข้า มา ประมวลผล ได้. (ชี้โพรงให้กระรอก อีก แล้ว) ได้ ๆ ๆ, ถ้า มัน block ได้, เรา ก็ มี วิธี แก้, เรา ก็ จะ ไป ใช้ gmail ผ่าน web interface ทั้งหมด เลย. # การ ส่ง email แทน ที่ จะ ส่ง ผ่าน smtp, ก็ ให้ ส่ง ทาง web interface ของ gmail แทน. แต่ ต้อง เขียน script เพิ่ม, script ที่ สามารถ ส่ง email ผ่าน web interface ของ gmail ได้. # การ fetch email ก็ ทำ ผ่าน web interface ของ gmail เช่น กัน. อันนี้ ก็ ต้อง เขียน script เพิ่ม เช่นกัน. ยัง จะ block อีก มั้ย? # การ ส่ง email ผ่าน web interface ก็ ต้อง มี การ post data ใช่ มะ. ก็ ทำ transparent proxy ให้ detect post data ดิ, ว่า มี tor-related protocol อยู่ มั้ย, แล้ว ก็ drop มัน ซะ. # การ เปิด อ่าน email ผ่าน web interface. ก็ กรอง web content ที่ มี tor-related protocol ออก ซะ. เรา ก็ ใช้ gmail ผ่าน https (ssl) ดิ, ไม่มี ทาง detect content ชัวร์. เขา ก็ จะ ทน ไม่ไหว, แล้ว ก็ block https มัน ซะ เลย. โดย ให้ เหตุผล ว่า ข้อมูล ทุกอย่าง ต้อง ตรวจสอบ ได้, ห้าม encrypt. 555, บ้า ไป แล้ว. แต่ เอ๊ะ, เดี๋ยว ... ถ้า เรา ใช้ https ได้, แล้ว จะ ไป ส่ง ผ่าน web interface ของ gmail อีก ทำไม วะ. ทำไม ไม่ ใช้ tor ผ่าน google port 443 (https) ตรง ๆ ไป เลย หละ. อืม, ถ้า ใช้ tor ผ่าน google:443 โดย ตรง ก็ ต้อง ขอ ความ ร่วมมือ จาก google ให้ เปิด บริการ tor เอา ไว้. แต่ ถ้า ใช้ ผ่าน email โดย ผ่าน ทาง gmail web interface, อันนี้ ไม่ จำเป็น ต้อง ขอ ความ ร่วมมือ จาก google หรือ gmail เลย. (แต่ เอ, ถ้า คน ใช้ กัน มาก ๆ, gmail มัน จะ รำคาญ แล้ว ก็ drop email ที่ มี tor protocol ทิ้ง ไป เลย รึเปล่า หว่า) -- Ans 03:26, 2 พฤษภาคม 2006 (UTC)